#ifndef operationProcessor_H
#define operationProcessor_H

#include "record.h"
#include "operationset.h"
#include "superstack.h"
#include "recordlist.h"
#include "operationlog.h"
#include "propertytree.h"
#include "expenserecordlist.h"
#include "incomerecordlist.h"
#include "alertlist.h"

#include <string>
using namespace std;
class OperationProcessor
{
private:
    Record record;
    Record oldRecord;
    Record newRecord;
    ExpenseRecordList expenseRecordList;
    IncomeRecordList incomeRecordList;
    AlertList alertList;
    Operation operation;
    SuperStack superStack;
    PropertyTree Ptree;
    OperationLog operationLog;
    bool operationSucceeded;
public:
    OperationProcessor();
    void process(Operation,Record,int);//add delete
    void process(Operation,Record,Record,int);//modify
    void process(Operation);//undo redo
    ExpenseRecordList getExpenseList();
    IncomeRecordList getIncomeList();
    ~OperationProcessor();
	void setFlag(void);
	void clearFlag(void);
	string getOperation(void);
    Record getRecord(void);
};

#endif // !operationProcessor_H
